package com.itheima.controller;

import com.itheima.pojo.Class;

import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.ClassService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

/**
 * 班级管理Controller
 */
@Slf4j
@RequestMapping("/class")
@RestController
public class ClassController {
    /*1. 新增班级（10分）
2. 批量删除班级（不用考虑班级还有学生的情况）（10分）
3. 查询班级列表（5分）
4. 根据职位Id查询班主任列表（5分）
5. 带条件的分页查询（10分）
   1. 输入 班级名称 进行搜索，支持模糊查询。
   2. 选择开始时间 和 结束时间进行查询，查询结课时间 在开始时间 和 结束时间范围内(包含)的班级数据。
6. 修改班级（10分）*/
    @Autowired
    private ClassService classService;

    /**
     * 新增班级
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Class clazz,@RequestParam(name=" emp.id") Integer headTeacher
    ){
        log.info("新增班级: {}" , clazz);
        //调用service新增部门
        clazz.setHeadTeacher(headTeacher);
        classService.add(clazz);
        return Result.success();
    }
/*2. 批量删除班级（不用考虑班级还有学生的情况）（10分）*/
    /**
     * 批量删除
     * @param ids
     */
    @DeleteMapping("/{ids}")
    public Result delete(@PathVariable List<Integer> ids){
        log.info("批量删除操作, ids:{}",ids);
        classService.delete(ids);
        return Result.success();
    }
   /*3. 查询班级列表（5分）*/
    @RequestMapping("list")
    List<Class> list(){
        log.info("查询全部班级信息");
        classService.list();
        return null;
    }

/*    4. 根据职位Id查询班主任列表（5分） 在empController中开发*/

/*5. 带条件的分页查询（10分）
   1. 输入 班级名称 进行搜索，支持模糊查询。
   2. 选择开始时间 和 结束时间进行查询，查询结课时间 在开始时间 和 结束时间范围内(包含)的班级数据。*/

    @GetMapping
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
        log.info("分页查询, 参数: {},{},{},{},{},{}",page,pageSize,name,begin,end);
        //调用service分页查询
        PageBean pageBean = classService.page(page,pageSize,name,begin,end);
        return Result.success(pageBean);
    }
  /*  6. 修改班级（10分）*/
    @PutMapping
    void update(@RequestBody Class clazz, @RequestParam(name="emp.id") Integer headTeacher){
        clazz.setHeadTeacher(headTeacher);
        classService.update(clazz);


    }

}
